package com.zhichat.web.vo.ws;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Objects;

/**
 * @ClassName: MsgVO
 * @Description: 消息VO
 * @Author: 团长九哥 https://space.bilibili.com/602197686
 * @CreateDate: 2024/12/12 12:57
 */
@Data
@Accessors(chain = true)
public class MsgVO<T> implements Serializable {
    /**
     * 消息主键id
     */
    private String msgId;
    /**
     * 会话id
     */
    private String sessionId;
    /**
     * 发送者id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long senderId;
    /**
     * 发送者NickName
     */
    private String senderNickname;
    /**
     * 发送时间（毫秒值）
     */
    private Long sendTime;
    /**
     * 接收者id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long receiverId;
    /**
     * 接收者NickName
     */
    private String receiverNickname;
    /**
     * 消息接受者类型（1、用户 2、群）
     */
    private Integer receiverType;
    /**
     * 消息内容
     */
    private String msg;
    /**
     * 消息类型
     */
    private Integer msgType;
    /**
     * 最后的消息
     */
    private String lastMsg;
    /**
     * 最后消息的创建时间
     */
    private Long lastMsgTime;
    /**
     * 消息状态（1、正在发送 2、已发送）
     */
    private Integer status;
    /**
     * 扩展消息体
     */
    private T data;
    /**
     * 文件名称（如果消息是文件，则在该字段体现）
     */
    private String fileName;
    /**
     * 文件类型（1、图片 2、音频 3、视频）
     */
    private Integer fileType;
    /**
     * 文件大小（单位：KB）
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long fileSize;
    /**
     * 群员
     */
    private Integer memberCount;

    public String getLastMsg() {
        return Objects.isNull(lastMsg) ? msg : lastMsg;
    }

    public Long getLastMsgTime() {
        return Objects.isNull(lastMsgTime) ? sendTime : lastMsgTime;
    }
}
